package com.huazai.juc.cec.thread.august.sixteen;

import lombok.extern.slf4j.Slf4j;

/**
 * @author Seon
 * @date 2022/8/16 1:46
 * 单例模式（犹豫模式）的简单实现
 * 以及 double checked locking 双检锁模式
 */
@Slf4j
public class BalkingModel {
    private BalkingModel() {
    }
    private static volatile BalkingModel INSTANCE = null;
    public static BalkingModel getInstance() {
        if (INSTANCE == null) {
            // 首次访问会同步，而之后的使用没有synchronized
            synchronized (BalkingModel.class) {
                if (INSTANCE == null) {
                    INSTANCE = new BalkingModel();
                }
            }
        }
        return INSTANCE;
    }
}
